Pixel based gobo record control format

ABSTRACT

Techniques for use in a digital mirror device based luminaire. The techniques include using a filter as a gobo for definition.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a divisional of U.S. application Ser. No.09/679,727, filed Oct. 4, 2000, which is a continuation of U.S.application Ser. No. 09/495,585 filed Feb. 1, 2000, now abandoned, whichclaims the benefit of U.S. provisional application serial No.60/118,195, filed on Feb. 1, 1999.

FIELD

The present invention relates to a system of controlling light beampattern (“gobo”) shape in a pixilated gobo control system.

BACKGROUND

Commonly assigned patent application Ser. No. 08/854,353, now U.S. Pat.No. 6,188,933, describes a stage lighting system which operates based oncomputer-provided commands to form special effects. One of those effectsis control of the shape of a light pattern that is transmitted by thedevice. This control is carried out on a pixel-by-pixel basis, hencereferred to in this specification as pixilated. The embodiment describesusing a digital mirror device, but other x-y controllable devices suchas a grating light valve, are also contemplated.

The computer controlled system includes a digital signal processor 106which is used to create an image command. That image command controlsthe pixels of the x-y controllable device to shape the light that it isoutput from the device.

The system described in the above-referenced application allowsunparalleled flexibility in selection of gobo shapes and movement. Thisopens an entirely new science of controlling gobos. The presentinventors found that, unexpectedly, even more flexibility is obtained bya special control language for controlling those movements.

SUMMARY

The present disclosure defines aspects that facilitate communicatingwith an a point controllable device to form special electronic lightpattern shapes. More specifically, the present application describesdifferent aspects of communication with an electronic gobo. Theseaspects include improved processing or improved controls for the gobo.

BRIEF DESCRIPTION OF THE DRAWINGS

These and other aspects of the invention will now be described withreference to the attached drawings, in which:

FIG. 1 shows a block diagram of the basic system operating theembodiment;

FIG. 2 shows a basic flowchart of operation;

FIG. 3 shows a flowchart of forming a replicating circles type gobo;

FIGS. 4A through 4G show respective interim results of carrying out thereplicating circles operation;

FIG. 5 shows the result of two overlapping gobos rotating in oppositedirections;

FIGS. 6(1) through 6(8) show a z-axis flipping gobo;

FIGS. 7A-7C show overlapping gobos and then color of overlap;

FIG. 8 shows the black diagram of the system including a transfercontroller;

FIG. 9 shows an intensity-sensitive color control elements;

FIG. 10 shows control of a framing shutter; and

FIG. 11 shows a transfer controller made from an FPGA.

DESCRIPTION OF THE PREFERRED EMBODIMENT

FIG. 1 shows a block diagram of the hardware used according to thepreferred embodiment. As described above, this system uses a digitalmirror device 100, which has also been called a digital mirror device(“DMD”) and a digital light processor device (“DLP”). More generally,any system which allows controlling shape of light on a pixel basis,including a grating light valve, could be used as the light shaper. Thislight shaper forms the shape of light which is transmitted. FIG. 1 showsthe light being transmitted as 102, and shows the transmitted light. Theinformation for the digital mirror 100 is calculated by a digital signalprocessor 106. Information is calculated based on local informationstored in the lamp, e.g., in ROM 109, and also in information which isreceived from the console 104 over the communication link.

The operation is commanded according to a format.

The preferred data format provides 4 bytes for each of color and gobocontrol information.

The most significant byte of gobo control data, (“dfGobo”) indicates thegobo type. Many different gobo types are possible. Once a type isdefined, the gobo formed from that type is represented by a number. Thattype can be edited using a special gobo editor described herein. Thegobo editor allows the information to be modified in new ways, and formsnew kinds of images and effects.

The images which are used to form the gobos may have variable and/ormoving parts. The operator can control certain aspects of these partsfrom the console via the gobo control information. The type of gobocontrols the gobo editor to allow certain parameters to be edited.

The examples given below are only exemplary of the types of gobo shapesthat can be controlled, and the controls that are possible when usingthose gobo shapes. Of course, other controls of other shapes arepossible and predictable based on this disclosure.

First Embodiment

A first embodiment is the control of an annulus, or “ring” gobo. The DMD100 in FIG. 1 is shown with the ring gobo being formed on the DMD. Thering gobo is type 000A. When the gobo type 0A is enabled, the goboeditor 110 on the console 104 is enabled and the existing gobo encoders120, 122, 124, and 126 are used. The gobo editor 110 provides theoperator with specialized control over the internal and the externaldiameters of the annulus, using separate controls in the gobo editor.

The gobo editor and control system also provides other capabilities,including the capability of timed moves between different editedparameters. For example, the ring forming the gobo could be controlledto be thicker. The operation could then effect a timed move betweenthese “preset” ring thicknesses. Control like this cannot even beattempted with conventional fixtures.

Another embodiment is a composite gobo with moving parts. These partscan move though any path that ia programmed in the gobo data itself.This is done in response to the variant fields in the gobo controlrecord, again with timing. Multiple parts can be linked to a singlecontrol allowing almost unlimited effects.

Another embodiment of this system adapts the effect for an “eye” gobo,where the pupil of the eye changes its position (look left, look right)in response to the control.

Yet another example is a Polygon record which can be used for forming atriangle or some other polygonal shape.

The control can be likened to the slider control under a QuickTime moviewindow, which allows you to manually move to any point in the movie.However, our controls need not be restricted to timelines.

Even though such moving parts are used, scaling and rotation on the gobois also possible.

The following type assignments are contemplated:

00_(—)0F=FixedGobo (with no “moving parts”)

10_(—)1F=SingleCntrl (with 1 “moving part”)

20_(—)2F=DoubleCntrl (with 2 “moving parts”)

30_FF=undefined, reserved.

The remaining control record bytes for each type are defined as follows:

total Byte dfGobo2 dfGobo3 dfGobo4 #gobos/type, memory FixedGoboID[23:16] ID[15:8]  ID[7:0] 16 M/type 256 M SingleCntrl ID[15:8] ID[7:0] control#1 64 k/type  1 M DoubleCntrl ID[7:0] control#2 control#1256/type  4 k

As can be seen from this example, this use of the control record tocarry control values does restrict the number of gobos which can bedefined of that type, especially for the 2_control type.

Console Support:

The use of variant part gobos requires no modifications to existing cotranslate directly to the values of the 4 bytes sent in thecommunications data packet as follows:

Byte: dfGobo dfGobo2 dfGobo3 dfGobo4 Enc: TopRight MidRight BotRightBotLeft FixedGobo: ID [23:16] ID [15:8] ID [7:0] SingleCntrl: ID [15:8]ID [7 0] control#1 DoubleCntrl: ID [7:0] control#2 control#1

These values would be part of a preset gobo, which could be copied asthe starting point.

Once these values are set, the third and fourth channels automaticallybecome the inner/outer radius controls. Using two radii allows theannulus to be turned “inside out”.

Each control channel's data always has the same meaning within theconsole. The console treats these values as simply numbers that arepassed on. The meanings of those numbers, as interpreted by the lampschange according to the value in dfGobo.

The lamp will always receives all 4 bytes of the gobo data in the samepacket. Therefore, a “DoubleCntrl” gobo will always have the correctcontrol values packed along with it.

Hence, the console needs no real modification. If a “soft” console_isused, then name reassignments and/or key reassignments may be desirable.

Timing:

For each data packet, there is an associated “Time” for gobo response.This is conventionally taken as the time allotted to place the new goboin the light gate. This delay has been caused by motor timing. In thissystem, variant gobo, the control is more dynamically used. If thenon-variant parts of the gobo remain the same, then it is still the samegobo, only with control changes. Then, the time value is interpreted asthe time allowed for the control change.

Since different gobo presets (in the console) can reference the samegobo, but with different control settings, this allows easily programmedtimed moves between different annuli, etc.

Internal Workings:

When the gobo command data is extracted from the packet at the lamp, thedfGobo byte is inspected first, to see if either dfGobo3 or dfGobo4 aresignificant in selecting the image. In the case of the “Cntrl” variants,one or both of these bytes is masked out, and the resulting 32-bitnumber is used to search for a matching gobo image (by Gobo _(—)1D) inthe library stored in the lamp's ROM 109.

If a matching image is found, and the image is not already in use, thenthe following steps are taken:

1) The image data is copied into RAM, so that its fields may be modifiedby the control values. This step will be skipped if the image iscurrently active.

2) The initial control values are then recovered from the data packet,and used to modify certain fields of the image data, according to thecontrol records.

3) The image is drawn on the display device, using the newly-modifiedfields in the image data.

If the image is already in use, then the RAM copy is not altered.Instead, a time-sliced task is set up to slew from the existing controlvalues to those in the new data packet, in a time determined by the newdata packet.

At each vertical retrace of the display, new control values arecomputed, and steps 2 (using the new control values) and 3 above arerepeated, so that the image appears modified with time.

The image data records:

All images stored in the lamp are in a variant record format:

Header:

Length 32 bits, offset to next gobo in list.

Gobo _(—)1D 32 bits, serial number of gobo.

Gobo Records:

Length 32 bits, offset to next record.

Opcode 16 bits, type of object to be drawn.

Data Variant part—data describing object.

_Length 32 bits, offset to next record.

Opcode 16 bits, type of object to be drawn.

Data Variant part—data describing object.

_EndMarker 64 bits, all zeroes—indicates end of gobo data.

+ Next gobo, or End Marker, indicating end of gobo list.

Gobos with controls are exactly the same, except that they containcontrol records, which describe how the control values are to affect thegobo data. Each control record contains the usual length and Opcodefields, and a field containing the control number (1 or 2).

These are followed by a list of “field modification” records. Eachrecord contains information about the offset (from the start of the gobodata) of the field, the size (8, 16 or 32 bits) of the field, and howits value depends on the control value.

Length 32 bits, offset to next record Opcode 16 bits = control_record(constant) CntrlNum 16 bits = 1 or 2 (control number) /* fieldmodification record #1 */ Address 16 bits, offset from start of gobo toaffected field. Flags 16 bits, information about field (size, signed,etc) Scale 16 bits, scale factor applied to control before use zPoint 16bits, added to control value after scaling. /* field modification record#2 */ Address 16 bits, offset from start of gobo to affected field.Flags 16 bits, information about field (size, signed, etc) Scale 16bits, scale factor applied to control before use zPoint 16 bits, addedto control value after scaling.

As can be seen, a single control can have almost unlimited effects onthe gobo, since ANY values in the data can be modified in any way, andthe number of field modification records is almost unlimited.

Note that since the control records are part of the gobo data itself,they can have intimate knowledge of the gobo structure. This makes thehard-coding of field offsets acceptable.

In cases where the power offered by this simple structure is notsufficient, a control record could be defined which contains code to beexecuted by the processor. This code would be passed parameters, such asthe address of the gobo data, and the value of the control beingadjusted.

Example Records.

The Annulus record has the following format:

Length 32 bits Opcode 16 bits, = type_annulus Pad 16 bits, unusedCentre_x 16 bits, x coordinate of centre Centre_y 16 bits, y coordinateof centre OuterRad 16 bits, outside radius (the radii get swapped whendrawn if their values are in the wrong order) InnerRad 16 bits, insideradius

It can be seen from this that it is easy to “target” one of the radiusparameters from a control record. Use of two control records, each withone of the radii as a target, would provide full control aver theannulus shape.

Note that if the center point coordinates are modified, the annulus willmove around the display area, independent of any other drawing elementsin the same gobo's data.

The Polygon record for a triangle has this format:

Length 32 bits Opcode 16 bits, = type_polygon Pad 16 bits, vertex count= 3 Centre_x 16 bits, x coordinate of vertex Centre_y 16 bits, ycoordinate of vertex Centre_x 16 bits, x coordinate of vertex Centre_y16 bits, y coordinate of vertex Centre_x 16 bits, x coordinate of vertexCentre_y 16 bits, y coordinate of vertex

It is easy to modify any of the vertex coordinates, producing distortionof the triangle.

The gobo data can contain commands to modify the drawing environment, byrotation, scaling, offset, and color control, the power of the controlrecords is limitless.

Second Embodiment

This second embodiment provides further detail about implementation oncethe gobo information is received.

Gobo information is, at times, being continuously calculated by DSP 106.The flowchart of FIG. 2 shows the handling operation that is carried outwhen new gobo information is received.

At step 200, the system receives new gobo information. In the preferredembodiment, this is done by using a communications device 111 in thelamp 99. The communications device is a mailbox which indicates when newmail is received. Hence, the new gobo information is received at step200 by determining that new mail has been received.

At step 202, the system copies the old gobo and switches pointers. Theoperation continues using the old gobo until the draw routine is calledlater on.

At step 204, the new information is used to form a new gobo. The systemuses a defined gobo (“dfGobo”) as discussed previously which has adefined matrix. The type dfGobo is used to read the contents from thememory 109 and thereby form a default image. That default image isformed in a matrix. For example, in the case of an annulus, a defaultsize annulus can be formed at position 0,0 in the matrix. An example offorming filled balls is provided herein.

Step 206 represents calls to subroutines. The default gobo is in thematrix, but the power of this system is its ability to very easilychange the characteristics of that default gobo. In this embodiment, thecharacteristics are changed by changing the characteristics of thematrix and hence, shifting that default gobo in different ways. Thematrix operations, which are described in further detail herein, includescaling the gobo, rotation, iris, edge, strobe, and dimmer. Other matrixoperations are possible. Each of these matrix operations takes thedefault gobo, and does something to it.

For example, scale changes the size of the default gobo. Rotationrotates the default gobo by a certain amount.

Iris simulates an iris operation by choosing an area of interest,typically circular, and erasing everything outside that area ofinterest. This is very easily done in the matrix, since it simplydefines a portion in the matrix where all black is written.

Edge effects carry out certain effects on the edge such as softening theedge. This determines a predetermined thickness, which is translated toa predetermined number of pixels, and carries out a predeterminedoperation on the number of pixels. For example, for a 50% edgesoftening, every other pixel can be turned off. The strobe is in effectthat allows all pixels to be turned on and off at a predeterminedfrequency, i.e., 3 to 10 times a second. The dimmer allows the image tobe made dimmer by turning off some of the pixels at predetermined times.

The replicate command forms another default gobo, to allow two differentgobos to be handled by the same record. This will be shown withreference to the exemplary third embodiment showing balls. Each of thosegobos are then handled as the same unit and the entirety of the goboscan be, for example, rotated. The result of step 206 and all of thesesubroutines that are called is that the matrix includes informationabout the bits to be mapped to the digital mirror 100.

At step 208, the system then obtains the color of the gobos from thecontrol record discussed previously. This gobo color is used to set theappropriate color changing circuitry 113 and 115 in the lamp 99. Notethat the color changing circuitry is shown both before and after thedigital mirror 100. It should be understood that either of those colorchanging circuits could be used by itself.

At step 210, the system calls the draw routine in which the matrix ismapped to the digital mirror. This is done in different ways dependingon the number of images being used. Step 212 shows the draw routine fora single image being used as the gobo. In that case, the old gobo, nowcopied as shown in step 202, is faded out while the new gobo newlycalculated is faded in. Pointers are again changed so that the systempoints to the new gobo. Hence, this has the effect of automaticallyfading out the old gobo and fading in the new gobo.

Step 214 schematically shows the draw routine for a system with multipleimages for an iris. In that system, one of the gobos is given priorityover the other. If one is brighter than the other, then that one isautomatically given priority. The one with priority 2, the lowerpriority 1, is written first. Then the higher priority gobo is written.Finally, the iris is written which is essentially drawing black aroundthe edges of the screen defined by the iris. Note that unlike aconventional iris, this iris can take on many different shapes. The iriscan take on not just a circular shape, but also an elliptical shape, arectangular shape, or a polygonal shape. In addition, the iris canrotate when it is non-circular so that for the example of a square iris,the edges of the square can actually rotate.

Returning to step 206, in the case of a replicate, there are multiplegobos in the matrix. This allows the option of spinning the entirematrix, shown as thin matrix.

An example will now be described with reference to the case of repeatingcircles. At step 200, the new gobo information is received indicating acircle. This is followed by the other steps of 202 where the old gobo iscopied, and 204 where the new gobo is formed. The specific operationforms a new gobo at step 300 by creating a circle of size diameterequals 1000 pixels at origin 00. This default circle is automaticallycreated. FIG. 4A shows the default gobo which is created, a default sizecircle at 00. It is assumed for purposes of this operation that all ofthe circles will be the same size.

At step 302, the circle is scaled by multiplying the entire circle by anappropriate scaling factor. Here, for simplicity, we are assuming ascaling factor of 50% to create a smaller circle. The result is shown inFIG. 4B. A gobo half the size of the gobo of FIG. 4A is still at theorigin. This is actually the scale of the subroutine as shown in theright portion of step 302. Next, since there will be four repeated gobosin this example, a four-loop is formed to form each of the gobos at step304. Each of the gobos is shifted in position by calling the matrixoperator shift. In this example, the gobo is shifted to a quadrant tothe upper right of the origin. This position is referred to as □ over 4in the FIG. 3 flowchart and results in the gobo being shifted to thecenter portion of the top right quadrant as shown in FIG. 4C. This isagain easily accomplished within the matrix by moving the appropriatevalues. At step 308, the matrix is spun by 90 degrees in order to putthe gobo in the next quadrant as shown in FIG. 4D in preparation for thenew gobo being formed into the same quadrant. Now the system is readyfor the next gobo, thereby calling the replicate command which quiteeasily creates another default gobo circle and scales it. The four-loopis then continued at step 312.

The replicate process is shown in FIG. 4E where a new gobo 402 is formedin addition to the existing gobo 400. The system then passes againthrough the four-loop, with the results being shown in the followingfigures. In FIG. 4F, the new gobo 402 is again moved to the upper rightquadrant (step 306). In FIG. 4G, the matrix is again rotated to leaveroom for a new gobo in the upper right quadrant. This continues untilthe end of the four-loop. Hence, this allows each of the gobos to beformed.

Since all of this is done in matrix operation, it is easily programmableinto the digital signal processor. While the above has given the exampleof a circle, it should be understood that this scaling and movingoperation can be carried out for anything. The polygons, circles,annulus, and any other shape is easily scaled.

The same operation can be carried out with the multiple parameter gobos.For example, for the case of a ring, the variable takes the form annulus(inner R, outer R, x and y). This defines the annulus and turns of theinner radius, the outer radius, and x and y offsets from the origin.Again, as shown in step 3, the annulus is first written into the matrixas a default size, and then appropriately scaled and shifted. In termsof the previously described control, the ring gobo has two controls:control 1 and control 2 defined the inner and outer radius.

Each of these operations is also automatically carried out by thecommand repeat count which allows easily forming the multiple positiongobo of FIGS. 4A-4G. The variable auto spin defines a continuous spinoperation. The spin operation commands the digital signal processor tocontinuously spin the entire matrix by a certain amount each time.

One particularly interesting feature available from the digital mirrordevice is the ability to use multiple gobos which can operate totallyseparately from one another raises the ability to have different gobosspinning in different directions. When the gobos overlap, the processorcan also calculate relative brightness of the two gobos. In addition,one gobo can be brighter than the other. This raises the possibility ofa system such as shown in FIGS. 5A-5C. Two gobos are shown spinning inopposite directions: the circle gobo 500 is spinning thecounterclockwise direction, while the half moon gobo 502 is spinning inthe clockwise direction. At the overlap, the half moon gobo which isbrighter than the circle gobo, is visible over the circle gobo. Sucheffects were simply not possible with previous systems. Any matrixoperation is possible, and only a few of those matrix operations havebeen described herein.

A final matrix operation to be described is the perspectivetransformation. This defines rotation of the gobo in the Z axis andhence allows adding depth and perspective to the gobo. For each gobo forwhich rotation is desired, a calculation is preferably made in advanceas to what the gobo will look like during the Z axis transformation. Forexample, when the gobo is flipping in the Z axis, the top goes back andlooks smaller while the front comes forward and looks larger. FIGS.6(1)-6(8) show the varying stages of the gobo flipping. In FIG. 6(8),the gobo has its edge toward the user. This is shown in FIG. 6(8) as avery thin line, e.g., three pixels wide, although the gobo could be zerothickness at this point. Automatic algorithms are available for such Zaxis transformation, or alternatively a specific Z axis transformationcan be drawn and digitized automatically to enable a custom look.

Third Embodiment

The gobo record format described above can have two gobos therein. Thesetwo gobos can be gobo planes, which can be used to project one imagesuperimposed over another image in a predefined way. For example, afirst image can be a pattern that emits light, e.g., a standard gobo.The second image can be totally transparent, or can have holes throughwhich the first image can be seen.

Analog gobos often project light through two gobos. The light is thenprojected through the intersection between the two gobos. Effectively,this takes an AND function between the gobos. Light will only be passedin places where both gobos are open.

In the present system, any function between two images can be projectedas an overall gobo shape. The system can, e.g., project an “or”operation between the two images. Moreover, the two images can beprojected in separate colors. The operation could be carried out insoftware.

A first gobo shown in FIG. 7A is a square gobo. For purposes of thisexample, the square gobo is projected in red (“R”), forming a first redlighted portion. The exterior non-projected portion 702 is black.

FIG. 7B shows the second gobo to be combined with the first gobo. Thesecond gobo is an off-center circle 704 to be projected in blue (“B”).The AND between these two gobos would transmit only the intersectionbetween the two gobos, shown by the hatched portion 706. Moreover, thisportion could only be transmitted in the additive or subtractivecombination between the two colors, red and blue.

The present system defines the two images as conceptually being separateplanes. This enables transmitting the “or”, or any other combination,between the two images. Both the first image 700 and the second image704 are displayed. Moreover, the intersection portion of the image 706can be made in any desired color, either the color of either, the colorof the subtractive combination, or a totally different color. While thissystem describes an “or” operation, it also encompasses any combinationbetween the gobos: e.g., exclusive or, Schmitt-triggered(hysteresis-induced combination) AND/OR, or others.

The gobo operation is also simplified and made more efficient by using atransfer controller as described herein.

FIG. 8 shows the basic block diagram of this embodiment. The DigitalSignal Processor (DSP) 800 effectively functions as the centralprocessing unit. A DSP for this embodiment is the TI TMS 320C80. Thishas a 64-bit bus 802. Memory 804 is attached to the bus 802. The memory804 effectively forms a working portion. A transfer controller 810 isprovided and allows increased speed. The transfer controller can takecontrol of the bus and can carry out certain functions. One suchfunction is a direct memory access. This allows moving information fromthe program memory 804 to a desired location.

The transfer controller receives information about the data to be moved,including the start location of the data, the number of bytes of thedata, and the end location of the data. The destination and operation isalso specified by the data 809. The transfer controller 810 then takesthe data directly from the memory 804, processes it, and returns it tothe memory or to the DLP without DSP intervention. The CPU can thentherefore instruct the transfer controller to take some action and thencan itself do something else.

Hardware block 820 also connects to the bus 802. This is preferablyformed from a Field Programmable Gate Array (FPGA). The FPGA can beconfigured into logical blocks as shown. The DSP also sends commandsthat reconfigure the FPGA as needed. The FPGA can be reconfigured toform fast Synchronous Dynamic Random Access Memory (SDRAM) shown as 822.

DSP 800 can be a TI TMS 320C80. This device includes an associatedtransfer controller which is a combined memory controller and DMA(direct memory access) machine. It handles the movement of data andinstructions within the system as required by the master processor,parallel processors, video controller, and external devices.

The transfer controller performs the following data-movement andmemory-control functions:

MP and ADSP instruction-cache fills

MP data-cache fills and dirty-block write-back

MP and ADSP packet transfers (PTs)

Externally initiated packet transfers (XPTs)

VC packet transfers (VCPTs)

MP and ADSP direct external accesses (DEAs)

VC shift-register-transfer (SRTs)

DRAM refresh

External bus requests

Operations are performed on the cache sub-block as requested by theprocessors' internal cache controllers. DEA operations transfer off-chipdata directly to or from processor registers. Packet transfers are themain data transfer operations and provide an extremely flexible methodfor moving multidimensional blocks of data (packets) between on-chipand/or off-chip memory.

Key features of this specific transfer controller include:

Crossbar interface,

64-bit data path,

Single-cycle access,

External memory interface,

4G-byte address range dynamically configurable memory cycles,

Bus size of 8, 16, 32, or 64 bits,

Selectable memory page size,

Selectable row/column address multiplexing,

Selectable cycle timing,

Big or little endian operation Cache, VRAM, and refresh controller,

Programmable refresh rate,

VRAM block-write support,

Independent source and destination addressing,

Autonomous address generation based on packet transfer parameters;

Data can be read and written at different rates

Numerous data merging and spreading functions can be performed duringtransfers; and

Intelligent request prioritization

Hence, the transfer controller allows definition of the limits of themessage/data. Then, the information can be automatically handled. Thetransfer controller can also generate a table of end points, carry outdirect-memory access, and manipulate the data while transferring thedata.

The SDRAM 822 can be used as fast-image memory, and can be connected,for example, to an image storage memory 830. The FPGA can also beconfigured to include serial interfaces 824, 826 with their associatedRAM 828, 829 respectively. Other hardware components also can beconfigured by the FPGA.

Since the FPGA can be reconfigured under control of the digital signalprocessor 800, the FPGA can be reconfigured dynamically to set anappropriate amount of SDRAM 822. For example, if a larger image or imageprocessing area is necessary, the FPGA can be reconfigured to make moreof its area into image memory. If a smaller image is desired, less ofthe FPGA can be made into SDRAM, allowing more of the FGPA for otherhardware functions. Moreover, the interfaces 832, 834 can be dynamicallyreconfigured. For example, the baud rate can be changed, bus width canbe reconfigured, and the like.

The video controller and line buffer 1114 can also be formed from thefield-programmable gate array.

The serial receiver 824 receives the lamp data from the controller, asdescribed in U.S. Pat. No. 5,969,485. The serial driver 826 produces aserial output that can drive, for example, an RS422 bus that runs themotors.

The C80 DSP includes the transfer controller as a part thereof.

An alternative embodiment uses a different DSP. The functions of thetransfer controller are then replicated in the FPGA, as desired. Forexample, an alternative possible DSP is the C6201 which uses the VeryLarge Instruction Word “VLIW” architecture. This system can use, forexample, 128-bit instructions. However, since this is connected to the32-bit data bus, a transfer controller could be highly advantageous.This would enable the equivalent of direct memory access from thememory. FIG. 11 shows the gate array schematic of this alternateembodiment in which the transfer controller is part of the FPGA.

A second embodiment of the gate array logic, as arranged according tothe present system, is shown in FIG. 11. This gate array logic is formedin the field-programmable gate array 820 to carry out many of thefunctions described herein. Block 1100 corresponds to a transparencydevice which calculates values associated with transparency.

Block 1102 is a dual-port RAM which receives the VLIW at one portthereof, and outputs that value to a multiplexer 1104, which outputs itas a 32 bit signal used by the CPU/DSP.

Transfer controller 1106 has the functionality discussed above. It iscontrolled directly by the CPU data received on line 1105. The transfercontroller can have two lists of parameters, each 64 bits in width.These values are received on the list receivers 1110, 1112.

Another issue noted by the current inventors is the size of images. Ifpossible, it is desirable to avoid using uncompressed images. Forexample, one simple form image to manipulate is a bitmap, also known asa “.bmp” type image. The bitmap represents each pixel of the image by anumber of bits, e.g., for an 8-bit 3-primary color image, each pixelwould require 24 bits. This can, unfortunately, use incredible amountsof storage. However, since the bit map has a 1-to-1 correspondence withthe image, it can be relatively easy to manipulate the bit map. Forexample, a matrix representing the bitmap can be easily manipulated,e.g., rotated. The image form can be compressed, e.g., to a GIF or JPEGimage. This compressed image, however, loses the one-to-onecorrespondence and hence cannot be directly processed as easily.

One aspect of the present system is to store the image as a compressedimage, and most preferably as polygons. The software package, AdobeStreamline (TM), breaks a bitmap into multiple polygons. The polygonscan then be defined as vectors. An additional advantage is that thevectors can be easily processed by the DSP. The DSP 800 then builds theimage from the vectors. Since the image is defined as vectors, it can beeasily handled via matrix arithmetic. Using Adobe Streamline, forexample, an 800 kilobyte bit map can be compressed to a 30 kilobytevector image.

Another improvement of the present system is the control of the gobousing filters.

In an analog gobo system, a filter can be used to blur the imagerepresenting the gobo, for example. Many different kinds of filters areused. For example, some filters randomly distort the image. Otherfilters affect the image in different ways. The blurring can be carriedout as an electronic filter. A preferred user interface defines thefilter as a separate gobo that is multiplied, e.g., AND ed, or OR edwith the first gobo.

More generally, a filter can be used to alter the image in some way,e.g., scale the image, decay the image, or the like. The blur can beused to make the image apparently out of focus in some locations.

The filter uses a second gobo that simulates the effect of an analogfilter. For example, one operation simulates the optical effect of theglass that forms the filter in an analog gobo. That glass is used tomake a model that emulates the optical properties of the glass. Thoseoptical properties are then manipulated through the matrix representingthe gobo, thereby effecting a digital representation of the filter. Inone aspect, the filter is considered as a separate gobo which is OR edwith the second gobo. In this case, the dual gobo definition describedabove can be used. Alternatively, the filter can simply be added to thegobo-defining matrix.

This definition has the advantage that it avoids defining a totallyseparate control. The filters are each defined as one specific gobo. Auser manual which defines gobos is used. This manual has filters addedto it. This avoids the need for a separator user manual of filters.

Another aspect defined by the present system is gobos that load andexecute code. Some images cannot be described in terms of control. Forexample, images may be defined as some random input. Some imagesprogress with time and maintain no record of their previous state. Theseimages can be defined in terms of code and in terms of a progressionfrom one time to another. Hence, the gobos that load and execute codedefine a gobo that includes an associated area to hold static values.

A gobo is requested. The code and variables that are associated withthat gobo are copied into RAM. The variables are initially at a presetstate. The code that is in the gobo portion is executed, using theportions in the variables. The variables are modified at each passthrough the portion.

Yet another feature of this system is intensity control over aspects ofthe image defining the gobo and dimming of the image defined thereby.Returning to the example of a bit map with 24-bit color, such a systemwould include 8 bits of red, 8 bits of green, and 8 bits of blue. It canbe desirable to fade the image while keeping the color constant withintensity change.

One system uses an experimental technique i.e. that is one that relieson experimentation, to determine how to fade in order to maintainconstant color. A look-up table is formed between the constant color andthe look up table. In this way value B_(x), G_(x), B_(x) representscolor 1 at intensity X. Ry, Gy, By represent the color at intensity y.

Another system directly maps the bits to color by defining the map aschrominance using techniques from color television. For example, thistakes the bits, and converts the values indicating image to color orchrominance (C) and image luminance (Y) of the image. The conversionbetween RGB and Y/C is well known. The values of Y and C whichcorrespond to the chrominance and luminance are then stored. The imagegobo can then be dimmed by reducing the Y, while keeping C the same. Ifdesired, the Y/C can be converted back to RGB after dimming. The dimminghowever, may change the “look” of the color being projected. This systemallows the color to be changed based on intensity.

Another system allows reducing the number of bits for a bitmap. Say, asan example, that it is desired to use a total of 8 bits to representeach pixel of the image. This could then be apportioned between thedesired bits with red having 3 bits, green having 3 bits, and bluehaving 2 bits. This limits the amount of information in any of thesecolors. Since there are only 2 bits for blue, there are only four levelsof blue that can be selected. This is often insufficient.

In this system, therefore, the bits are compressed by assuming that eachtwo adjacent lines have exactly the same values. Hence, each two linesget the same color value (but can have different intensity values). Nowin a system as described above, two lines of red can have 5 bits, twolines of green can have 6 bits, and two lines of blue can also have 5bits. This provides an appropriate dynamic range for color at theexpense of losing half the resolution for color.

Moreover, this has an additional advantage in that it allows 5 bits forgrey scale in such a system.

A possible problem with such a system, however, as described above, isthat the information would not necessarily be aligned on byteboundaries. It could, therefore, be necessary to take the whole image,manipulate it, and then put the whole image back.

The basic system is shown in FIG. 9. The luminance Y is an 8-bitrepresentation of the brightness level of the image. The hue is thendivided into dual-line multiple bits. Each value is used for two lineseach.

Dimming in such a system is carried out as shown in FIG. 9. For example,the blue bits 900 are multiplied in a hardware multiplier 902 by theluminance. Similarly, the green is multiplied in a second hardwaremultiplier 904 by the same luminance value. This controls the relativelevels of red, green, and blue that are output on the RGB lines 910.

The multipliers that are used are very simple, since they simplymultiply 8 bits by 3 bits. Therefore, a relatively simple in structurehardware multiplier can be used for this function.

This provides red, green, and blue color without loss of data and withsubstantially perfect fading.

An additional feature described herein is a framing shutter gobo. Abasic framing shutter is shown in FIG. 10. FIG. 10 shows the circularspot of the beam, and the analog shutter, often called a LECO. Eachanalog shutter 1000 can be moved in and out in the direction of thearrows shown. Each shutter can also be moved in an angular direction,shown by the arrow 1002. There are a total of four shutters, which, incombination, enable framing the beam to a desired shape. For example,the shutter 1004 can be moved to the position shown in dotted lines as1006. When this happens, the effective image that is passed becomes asshown in hatched lines in FIG. 10. Another possibility is that theshutter can be tilted to put a notch or nose into the window around theimage.

According to this system, a record is formed for a gobo defining aframing shutter. The framing shutter gobo allows control of multiplevalues including the positions of the four framing shutter edges 1000,1004, 1006, and 1008. Each framing shutter is defined in terms of itsvalue d, corresponding to the distance between one edge 1010 of theframing shutter and the edge 1011 of the original spot. In this system,the value d is shown representing the right-hand edge of the framingshutter. Another selectable value is θ, which defines the angle that thefront blade 1013 of the framing shutter makes relative to perfecthorizontal or vertical. Yet another parameter which can be selected isoffset O which represents the distance between the framing shutter edge1010 and the ideal edge portion 1017. Other values can alternatively bespecified. By controlling all these values, the Medusa shutter can ineffect simulate any desired framing shutter by using an electronic gobo.

A number of different special gobos are defined according to the presentsystem. Each of these gobos is defined according to the record formatdescribed above.

These include:

Oscilloscope. This enables simulating the output value of anoscilloscope as the gobo. For example, any value that can be displayedon the oscilloscope could be used as a gobo with a finite width. Thiscould include sine waves, square waves, straight waves, sawtooth waves,and the like.

Other variable gobos include vertical lines, moire lines, laser dots,radial lines, concentric circles, geometric spiral, bar code, moonphases, flowers and rotating flowers, a diamond tiling within a shape,kaleidoscope, tunnel vision, and others.

Animated gobos correspond to those which execute codes described above.Some examples of these include, for example, self-animating randomclouds; self-animating random reflections; self-animating random flames,fireworks; randomly moving shapes such as honeycombs, crosswords, orundulations; foam; random flying shapes.

Although only a few embodiments have been described in detail above,those having ordinary skill in the art certainly understand thatmodifications are possible.

What is claimed is:
 1. A processing system for a digitally-controllable light passing element, comprising: a memory, storing a digital file that represents a shape of light to be passed; a digital signal processor, which carries out, in operation, mathematical operations on said digital file; a transfer controller element, separate from said digital signal processor, which receives information about data to be moved, including start location of the data, and other information which enables the device to determine the data, and which obtains the data directly from the memory, processes it according to the requests, and returns the information to the memory, without intervention of the digital signal processor; and uses said information to modify said digital file; and a hardware block, which receives and interfaces commands from a remote controller.
 2. A device as in claim 1 wherein said hardware block is formed from a configured FPGA.
 3. A device as in claim 2 wherein said digital signal processor configures the FPGA.
 4. A device as in claim 2 wherein said FPGA is formed into dynamic RAM blocks.
 5. A devices as in claim 2 wherein said FPGA is configured to form input and output ports.
 6. A device as in claim 2 wherein said transfer controller is formed from said FPGA.
 7. A device as in claim 2 wherein said transfer controller is separate from the FPGA.
 8. A method of controlling a digital gobo, comprising: forming an image representing a gobo from a plurality of polygons; and using said image to control an electronic element to shape an output light.
 9. A method as in claim 8 wherein said polygons are vectorized polygons.
 10. A method as in claim 8 further comprising using said image to control a digital mirror device to display light according to information in said image.
 11. A method as in claim 8 further comprising filtering said image using a filter.
 12. A method of projecting light, comprising: forming an image which will be used as a gobo for said light, to shape an outer edge of said light; compressing said image; storing the compressed version of said image; and using said compressed version of said image to control an electronic element to shape said light.
 13. A method as in claim 12 wherein said compressed image is compressed using vectors.
 14. A method as in claim 13 wherein the vectorized image is processed using matrix arithmetic.
 15. A method as in claim 13 wherein said compressing comprises dividing the image into multiple polygons, and defining said polygons in terms of vectors.
 16. A method of storing information for controlling a gobo, comprising: storing a first image representing a gobo shape; storing a second image, representing a filter used to distort the gobo shape and using said first and second images to control an electronic device to display an image.
 17. A method as in claim 16 wherein said filter defines an object which is mathematically applied to said gobo.
 18. A method as in claim 16 wherein said filter comprises a scale of the image or a decay of the image.
 19. A method as in claim 16 wherein said filter comprises a blur of the image.
 20. A method as in claim 16 wherein said filter comprises a gobo that simulates an effect of an analog filter.
 21. A method as in claim 20 wherein said effect of the analog filter is an effect of optical properties of specified glass.
 22. A method of controlling a digital light controlling element, comprising: storing an image representation in a memory, said image representation indicating a basic gobo; modifying said image representation using a second gobo acting as a filter to form a modified image; and using the modified image to control the digital light controlling element, to display light.
 23. A method as in claim 22 wherein said filter includes a specified gobo.
 24. A method as in claim 22 wherein said gobos hold static values enabling execution of code. 